package com.example.demo.customer;

import com.example.demo.exception.ApiRequestException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.OptionalLong;

@RequestMapping(path = "api/v2/customers")
@RestController
public class CustomerControler2 {
    private final CustomerService customerService;

@Autowired
      public CustomerControler2(CustomerService customerService ){
         this.customerService=customerService;
      }

      @GetMapping
      List<Customer> getCustomers(){
    return customerService.getCustomers();
      }

    @GetMapping("{customerId}")
    Customer getCustomer(@PathVariable("customerId") Long id) {

        return customerService.getCustomer(id);

    }

        @PostMapping
    void createNewCustomer(
            @Valid
            @RequestBody Customer customer){
    System.out.println("POST 请求...");
    System.out.println(customer);
        }

        @PutMapping
        void updateCustomer(@RequestBody Customer customer){
    System.out.println("UPDATE 请求");
    System.out.println(customer);
        }



        @DeleteMapping(path = {"{customerId}"})
    void deleteCustomer(@PathVariable("customerId") Long id){

    System.out.println("DELETE 请求，删除 Customer,其ID为"+id);
        }

        @GetMapping(path = "{customerId}/exception")
        Customer getCustomerException(@PathVariable("customerId") Long id){
          throw new ApiRequestException("ApRequestException for customer" + id);

        }

}
